package com.cje.utils;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.util.HashMap;
import java.util.List;

/**
 * @Auther: ChenJinEn
 * @Date: 2020/7/29 13:10
 * @Description: //TODO
 */
public class SpringUtil {
    public static HashMap<String, Object> map = new HashMap<>();
    static {
        //解析xml获取xml中所有的信息
        SAXReader reader = new SAXReader();
        try {
            //创建文档对象
            Document doc = reader.read("src/main/java/com/utils/beans.xml");
            //获取根节点
            Element root = doc.getRootElement();
            //获取根节点中所有的子节点
            //element("bean") : 获取第一个叫bean的子节点
            //elements("bean") : 获取所有叫bean的子节点
            //elements() : 获取根标签下bean命名的所有的子节点
            List<Element> beanList = root.elements("bean");
            //获取每一个bean的id和class
            for (Element element : beanList) {
                String id = element.attributeValue("id");
                String className = element.attributeValue("class");

                //通过className全限类名创建对象--获取字节码
                Class clazz = Class.forName(className);
                //通过反射创建对象
                Object obj = clazz.newInstance();
                //存储在Map集合中
                //key: id
                //value:obj
                map.put(id ,obj);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //需要实现的功能，传入一个名字，获取一个Bean对象
    public static Object getBean(String name){
        return map.get(name);
    }
    public static void main(String[] args) {
        System.out.println(map);
    }


}
